前言

概述

本文档详细描述WS53V100 SDK适配openharmony XTS认证操作指导。

读者对象

本文档主要适用以下工程师:

  • 技术支持工程师

  • 软件开发工程师

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号

说明

表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。

表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。

表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“须知”不涉及人身伤害。

对正文中重点信息的补充说明。

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

修改记录

文档版本

发布日期

修改说明

02

2026-07-01

更新“升级接口适配”章节内容。

01

2024-08-08

第一次正式版本发布。

概述

openharmony XTS认证具体描述与要求,请参考openharmony官网XTS信息。

WS53属于轻量级系统,只需要关注轻量级系统的测试项,当前最新自检表为《OpenHarmony设备兼容性规范3.2自检表_轻量系统.xlsx》,筛选出如下测试套:

中文名称*

英文名称*

子系统

归属

适配系统类型

开源仓

源码仓

轻量系统最小系统

运动表

轻量系统ACTS测试套件集合

轻量系统服务管理

samgr_lite

系统服务管理

芯片系统公共

轻量|小型

https://gitee.com/openharmony/systemabilitymgr_samgr_lite

foundation/systemabilitymgr/samgr_lite

Y

Y

ActsSamgrTest

轻量系统工具库

utils_lite

公共基础类库

芯片系统公共

轻量|小型

https://gitee.com/openharmony/commonlibrary_utils_lite

commonlibrary/utils_lite

Y

Y

ActsUtilsFileTest

设备密钥管理

huks

安全基础能力

芯片系统公共

轻量|小型|标准

https://gitee.com/openharmony/security_huks

base/security/huks

Y

Y

ActsHuksHalFunctionTest

init

init

启动恢复

芯片系统公共

轻量|小型|标准

https://gitee.com/openharmony/startup_init

base/startup/init

Y

Y

ActsBootstrapTest

ActsParameterTest

轻量流水日志

hilog_lite

DFX

芯片系统公共

轻量|小型

https://gitee.com/openharmony/hiviewdfx_hilog_lite

base/hiviewdfx/hilog_lite

Y

Y

ActsDfxFuncTest

ActsHieventLiteTest

轻量系统安装

sys_installer_lite

升级服务

系统组件

轻量|小型

https://gitee.com/openharmony/update_sys_installer_lite

base/update/sys_installer_lite

Y

Y

ActsUpdaterFuncTest

本文档指导适配XTS认证所需的openharmonyAPI接口,按照《L0设备OpenHarmony适配通用指导》思路执行,本文档不再赘述。

准备工作

  1. 搭建openharmony编译环境(请参考openharmony官网环境搭建说明)。

  2. 下载openharmony源码(release 3.2)。

  3. 完成openharmony预编译。

  4. 并在该环境上完成WS53V100 SDK环境搭建,请参见《WS53V100 SDK开发环境搭建 用户指南》。

编译openharmony静态库

进入openharmony源码根目录,完成以下配置。

创建WS53V100工程

  1. 拷贝device/board/hisilicon/hispark_pegasus文件夹, 重命名为“ws53

    cp -r device/board/hisilicon/hispark_pegasus device/board/hisilicon/ws53”。

  2. 在“device/soc/hisilicon”下创建ws53v100文件夹。

    cd device/soc/hisilicon

    mkdir ws53v100
    
  3. 添加编译文件device/soc/hisilicon/ws53v100/BUILD.gn,文件内容如下:

    # Copyright (C) 2024 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved.

    group("ws53v100") { 
    
    }
    
  4. 进入ws53v100目录,将WS53V100 SDK拷贝到该目录下,并创建文件夹adapter/hals用存放升级及文件系统接口适配源码。

    cd device/soc/hisilicon/ws53v100

    cp -r ***/sdk ./ 
    
    mkdir adapter 
    
    cd adapter 
    
    mkdir hals
    

  5. 拷贝vendor/hisilicon/hispark_pegasus目录到vendor/hisilicon,并重命名为ws53;去掉demo,audio以及token,仅保留下图所示文件。

    cp -r vendor/hisilicon/hispark_pegasus vendor/hisilicon/ws53

    cd vendor/hisilicon/ws53 
    
    rm -rf demo 
    
    cd hals 
    
    rm -rf audio 
    
    rm -rf utils/token
    

子系统配置

  1. 子系统配置 vendor/hisilicon/ws53/config.json 设置L0认证所必要的子系统,可以根据自己实际情况裁剪和添加。配置如下:

    { 
        "product_name": "wifiiot_ws53", 
        "type": "mini", 
        "version": "3.0", 
        "ohos_version": "OpenHarmony 1.0", 
        "device_company": "hisilicon", 
        "device_build_path": "device/board/hisilicon/ws53", 
        "board": "ws53", 
        "kernel_type": "liteos_m", 
        "kernel_is_prebuilt": true, 
        "kernel_version": "", 
        "subsystems": [ 
          { 
            "subsystem": "hiviewdfx", 
            "components": [ 
              { "component": "hilog_lite", "features":[] }, 
              { "component": "hievent_lite", "features":[] } 
            ] 
          }, 
          { 
            "subsystem": "systemabilitymgr", 
            "components": [ 
              { "component": "samgr_lite", "features":[] } 
            ] 
          }, 
          { 
            "subsystem": "security", 
            "components": [ 
              { "component": "huks", "features": 
                [ 
                  "disable_huks_binary = false", 
                  "disable_authenticate = false", 
                  "huks_use_lite_storage = true", 
                  "huks_use_hardware_root_key = true", 
                  "huks_config_file = \"hks_config_lite.h\"" 
                ] 
              } 
            ] 
          }, 
          { 
            "subsystem": "startup", 
            "components": [ 
              { "component": "bootstrap_lite", "features":[] }, 
              { "component": "syspara_lite", "features":[] }, 
              { "component": "init_lite", "features": 
                [ 
                  "enable_ohos_startup_init_feature_begetctl_liteos = true" 
                ] 
              } 
            ] 
          }, 
          { 
            "subsystem": "updater", 
            "components": [ 
              { "component": "ota_lite", "features":[] } 
            ] 
          }, 
          { 
            "subsystem": "commonlibrary", 
            "components": [ 
              { "component": "file", "features":[] } 
            ] 
          }, 
          { 
           "subsystem": "xts", 
           "components": [ 
             { "component": "xts_acts", "features":[]}, 
             { "component": "xts_tools", "features":[] } 
            ] 
          } 
        ], 
        "third_party_dir": "//third_party", 
        "product_adapter_dir": "//vendor/hisilicon/ws53/hals" 
      } 
    
    
  2. 编译适配ohos.build

    修改“vendor/hisilicon/ws53/ohos.build”,文件内容如下:

    { 
      "parts": { 
        "product_wifiiot_ws53": { 
          "module_list": [ 
            "//vendor/hisilicon/ws53:ws53" 
          ] 
        } 
      }, 
      "subsystem": "product_wifiiot_ws53" 
    }
    
  3. 编译适配 BUILD.gn

    修改“vendor/hisilicon/ws53/BUILD.gn”,文件内容如下:

    # Copyright (C) 2024 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved. 
    group("ws53") { 
    }
    

工具链配置

  1. 配置编译工具链文件“device/board/hisilicon/ws53/liteos_m/config.gni”,文件内容如下:

    # Copyright (C) 2024 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved. 
    
    
    # Kernel type, e.g. "linux", "liteos_a", "liteos_m". 
    kernel_type = "liteos_m" 
     
    # Kernel version. 
    kernel_version = "" 
     
    # Board CPU type, e.g. "cortex-a7", "riscv32". 
    board_cpu = "" 
     
    # Board arch, e.g.  "armv7-a", "rv32imac". 
    board_arch = "rv32imac" 
     
    # Toolchain name used for system compiling. 
    # E.g. gcc-arm-none-eabi, arm-linux-harmonyeabi-gcc, ohos-clang,  riscv32-unknown-elf. 
    # Note: The default toolchain is "ohos-clang". It's not mandatory if you use the default toolchain. 
    board_toolchain = "riscv32-linux-musl" 
     
    # The toolchain path installed, it's not mandatory if you have added toolchain path to your ~/.bashrc. 
    board_toolchain_path = "" 
     
    # Compiler prefix. 
    board_toolchain_prefix = "riscv32-linux-musl-" 
     
    # Compiler type, "gcc" or "clang". 
    board_toolchain_type = "gcc" 
     
    # Board related common compile flags. 
    board_cflags = [ 
      "-mabi=ilp32", 
      "-falign-functions=2", 
      "-msave-restore", 
      "-fno-optimize-strlen", 
      "-freorder-blocks-algorithm=simple", 
      "-fno-schedule-insns", 
      "-fno-inline-small-functions", 
      "-fno-inline-functions-called-once", 
      "-mtune=size", 
      "-mno-small-data-limit=0", 
      "-fno-aggressive-loop-optimizations", 
      "-std=c99", 
      "-Wpointer-arith", 
      "-Wstrict-prototypes", 
      "-ffunction-sections", 
      "-fdata-sections", 
      "-fno-exceptions", 
      "-fno-short-enums", 
      "-Wextra", 
      "-Wundef", 
      "-U", 
      "PRODUCT_CFG_BUILD_TIME", 
      "-D__LITEOS__", 
      "-DCMSIS_OS_VER=2", 
      "-DLOSCFG_COMPAT_CMSIS_VER_2", 
      "-DCHIP_WS53=1", 
      "-DCHIP_VER_Hi3861", 
      "-DLOSCFG_XTS_SUPPORT", 
    ] 
    board_cxx_flags = board_cflags 
    board_ld_flags = [] 
     
    # Board related headfiles search path. 
    board_include_dirs = [ 
      "${ohos_root_path}commonlibrary/utils_lite/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/include/driver",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/include/middleware/utils",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/chips/ws53/update/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/chips/ws53/partition/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/chips/ws53/littlefs",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/utils/update/inner_include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/utils/common_headers",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/drivers/chips/ws53/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/drivers/chips/ws53/include/acore",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/drivers/boards/ws53_fpga/memory_config/include/product",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/kernel/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/platform/libsec/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/drivers/interrupt/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/drivers/timer/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/targets/ws53/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/arch/riscv/include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/arch/riscv/include/arch",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/compat/cmsis",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/CMSIS/CMSIS/RTOS2/Include",
    "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/incubator-nuttx/include",
    ] 
     
    # Board adapter dir for OHOS components. 
    board_adapter_dir = "//device/soc/hisilicon/ws53v100/adapter" 
     
    # Sysroot path. 
    board_configed_sysroot = "" 
     
    # Board storage type, it used for file system generation. 
    storage_type = ""
    
  2. 编译适配 device/board/hisilicon/ws53/ohos.build,文件内容如下:

    {

      "parts": { 
    
        "device_ws53": { 
    
          "module_list": [ 
    
            "//device/soc/hisilicon/ws53v100:ws53v100" 
    
          ] 
    
        } 
    
      }, 
    
      "subsystem": "device_ws53" 
    
    }
    

文件系统接口适配

  1. 拷贝WS53V100 SDK 文件系统接口适配文件到openharmony工程(把WS53V100 SDK中“littlefs_xts_adapt.c”文件拷贝到openharmony源码中“device/soc/hisilicon/ws53v100/adapter/hals/utils/file/src”目录):

    cd device/soc/hisilicon/ws53v100/adapter/hals/ 
    mkdir utils 
    cd utils 
    mkdir file 
    cd file 
    mkdir src 
    cd src 
    cp ~/ws53/sdk/middleware/utils/fs/adapter/xts/littlefs_xts_adapt.c ./
    
  2. 添加编译脚本“device/soc/hisilicon/ws53v100/adapter/hals/utils/file/BUILD.gn”,文件内容如下:

    import("//build/lite/config/component/lite_component.gni") 
     
    static_library("hal_file_static") { 
      sources = [ "src/littlefs_xts_adapt.c" ] 
      include_dirs = [ 
        "//commonlibrary/utils_lite/hals/file", 
        "//device/soc/hisilicon/ws53v100/sdk/include", 
      ] 
    }
    

    文件目录结构如下图所示。

升级接口适配

  1. 拷贝 WS53V100 SDK升级适配文件到openharmony工程,(把WS53V100 SDK中upg_xts_adapt.c文件拷贝到openharmony源码中“device/soc/hisilicon/ws53v100/adapter/hals/update”目录):

    cd device/soc/hisilicon/ws53v100/adapter/hals/ 
    mkdir update 
    cd update 
    cp ~/ws53/sdk/middleware/utils/update/adapter/xts/upg_xts_adapt.c ./
    

    文件upg_xts_adapt.c包含数组g_pub_key_buf为xts OTA升级所需要的公钥,应用时数组内容和长度需要修改。

    公私密钥生成请参考openharmony开发指南,开源指导可参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-ota-guide.md#%E7%94%9F%E6%88%90%E5%85%AC%E7%A7%81%E9%92%A5%E5%AF%B9。

  2. 添加编译脚本“device/soc/hisilicon/ws53v100/adapter/hals/update/BUILD.gn”,文件内容如下:

    import("//build/lite/config/component/lite_component.gni") 
     
    static_library("hal_update_static") { 
      sources = [ "upg_xts_adapt.c" ] 
      include_dirs = [ 
        "//base/update/ota_lite/hals", 
        "//base/update/ota_lite/interfaces/kits", 
        "//device/soc/hisilicon/ws53v100/sdk/include", 
      ] 
    }
    

    文件目录结构如下图所示。

编译openharmony工程

  1. 进入openharmony源码根目录,执行hb set,选择“wifiiot_ws53”。

  2. 执行编译命令“hb build -f -b debug --gn-args build_xts=true”。编译成功后在“out\ws53\wifiiot_ws53\libs”路径下生成静态库

    编译成功打印如下:

XTS版本编译和执行

SDK 链接openharmony静态库

  1. 将编译的openharmony静态库拷贝到WS53 SDK的二进制库目录下,命令依次为(请根据自己的目录修改命令)。

    cd ws53/sdk/interim_binary/ws53/libs/ 
    mkdir ohos 
    cd ohos/ 
    mkdir ws53_liteos_xts 
    cd ws53_liteos_xts / 
    cp ~/openharmony/adapt_3_2/out/ws53/wifiiot_ws53/libs/* ./
    
  2. 修改xts编译目标,链接上述库。

    打开文件“ws53\sdk\build\config\target_config\ws53\config.py”,搜索" ws53_liteos_xts ",在'ram_component中加入如下库:

    'bootstrap','broadcast','inithook','init_utils','begetutil','hctest', 
    'native_file','hal_file_static','init_log','hilog_static', 
    'hievent_lite_static','hiview_lite_static','hilog_lite_static', 
    'hota','hal_update_static', 
    'huks_3.0_sdk','huks_test_common', 
    'hal_sysparam','param_client_lite',  
    'samgr_source','samgr_adapter','samgr', 
    'module_ActsParameterTest','module_ActsBootstrapTest','module_ActsHieventLiteTest', 
    'module_ActsUtilsFileTest','module_ActsUpdaterFuncTest','module_ActsHuksHalFunctionTest', 
    'module_ActsDfxFuncTest', 
    'module_ActsSamgrTest',
    

编译XTS目标

进入SDK根目录,执行xts编译:

cd ~/ws53/sdk/ 
./build.py -c ws53_liteos_xts

执行用例

  1. 将“ws53\sdk\output\ws53\fwpkg\pack_all_core\ws53_liteos_xts\fpga_all_in_one.fwpkg”文件烧录到单板中,烧录配置与烧录APP版本一致。

  2. 烧录完成后重启单板,单板自动开始执行用例。

  3. 待用例执行完后,搜索日志中fail字段,查看是否存在未通过的用例(正常是全部通过)。